package com.ruoyi.project.system.service.impl;

import com.ruoyi.project.system.mapper.ResdelMapper;
import com.ruoyi.project.system.service.IResdelService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class ResdelServiceImpl implements IResdelService {

    private static final Logger log = LoggerFactory.getLogger(ResdelServiceImpl.class);

    @Autowired
    private ResdelMapper resdelMapper;

    /**
     * 清理当天之前（昨天及更早）的所有预约记录（不限制状态）
     */
    @Override
    @Transactional
    public boolean cleanReservationsBeforeToday() {
        log.info("开始执行定时任务：清理当天之前的所有预约记录");
        try {
            // 时间节点：当天0点（LocalDate.now() -> 2025-11-29，转LocalDateTime为 2025-11-29 00:00:00）
            LocalDateTime todayStart = LocalDate.now().atStartOfDay();
            // 查询所有 create_time < 当天0点 的记录ID（不限制resolve状态）
            List<Long> idsToDelete = resdelMapper.selectIdsByStatusAndCreateTimeBefore(todayStart);

            if (idsToDelete == null || idsToDelete.isEmpty()) {
                log.info("没有找到当天之前的预约记录需要删除。");
                return true;
            }

            log.info("共找到 {} 条当天之前的预约记录，准备执行删除。", idsToDelete.size());
            int affectedRows = resdelMapper.deleteBatchIds(idsToDelete);
            log.info("定时任务执行完成，成功删除 {} 条记录。", affectedRows);
            return true;
        } catch (Exception e) {
            log.error("执行定时清理任务时发生异常：", e);
            // 异常触发事务回滚
            return false;
        }
    }

    // 原有方法可选保留（若后续需要），不需要则删除
    // @Override
    // @Transactional
    // public boolean cleanReservationsByStatusAndHours(Integer resolveStatus, int hours) {
    //     // 原有逻辑...
    // }
}